/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.gob.fonafe.action;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.Preparable;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.RequestAware;
import pe.gob.fonafe.domain.ResultadosSubastaBean;
import pe.gob.fonafe.domain.SubastaBean;

/**
 *
 * @author czela
 */
public class DownloadFileSubasta extends ActionSupport implements Preparable,RequestAware{

    private static final Logger logger = Logger.getLogger(DownloadFileSubasta.class);
    private Map<String,Object> request;

    private String idVersionSubasta;
    private String idSubasta;
    private String idResultado;
    private InputStream inputStream;
    private String mimeType;
    private String titulo;

    public void prepare() throws Exception {
        mimeType = "";
    }

    public String downloadBases(){
        String resultado ="";
        try{
            HttpSession sesion = ServletActionContext.getRequest().getSession();
            List<SubastaBean> listSubastaTemp = (List<SubastaBean>)sesion.getAttribute("listaSubastas");
            if(!idSubasta.equalsIgnoreCase("")){
                byte[] fileBases =null;
                for(SubastaBean bean:listSubastaTemp){
                    if(bean.getId().equalsIgnoreCase(idSubasta)){
                        fileBases = bean.getBases();
                        mimeType = bean.getContentTypeBases();
                        titulo = bean.getNombases();
                        break;
                    }
                }
                if(fileBases != null){
                    inputStream = new ByteArrayInputStream(fileBases);
                    resultado = SUCCESS;
                }
            }
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
            resultado=ERROR;
        }
        return resultado;
    }

    public String downloadAnexo(){
        String resultado ="";
        try{
            HttpSession sesion = ServletActionContext.getRequest().getSession();
            List<SubastaBean> listSubastaTemp = (List<SubastaBean>)sesion.getAttribute("listaSubastas");
            if(!idSubasta.equalsIgnoreCase("")){
                byte[] fileAnexo =null;
                for(SubastaBean bean:listSubastaTemp){
                    if(bean.getId().equalsIgnoreCase(idSubasta)){
                        fileAnexo = bean.getAnexo();
                        mimeType = bean.getContentTypeAnexo();
                        titulo = bean.getNomAnexo();
                        break;
                    }
                }
                if(fileAnexo != null){
                    inputStream = new ByteArrayInputStream(fileAnexo);
                    resultado = SUCCESS;
                }
            }
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
            resultado=ERROR;
        }
        return resultado;
    }

    public String downloadResultados(){
        String resultado="";
        try{
            HttpSession sesion = ServletActionContext.getRequest().getSession();
            List<ResultadosSubastaBean> listResultadoTemp = (List<ResultadosSubastaBean>)sesion.getAttribute("listaResultados");
            if(!idResultado.equalsIgnoreCase("")){
                byte[] fileAnexo =null;
                for(ResultadosSubastaBean bean:listResultadoTemp){
                    if(bean.getId().equalsIgnoreCase(idResultado)){
                        fileAnexo = bean.getArchivo();
                        mimeType = bean.getExtenArchivo();
                        titulo = bean.getNomArchivo();
                        break;
                    }
                }
                if(fileAnexo != null){
                    inputStream = new ByteArrayInputStream(fileAnexo);
                    resultado = SUCCESS;
                }
            }
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
            resultado=ERROR;
        }
        return resultado;
    }

    public String downloadResultadoVersion(){
        String resultado="";
        try{
            HttpSession sesion = ServletActionContext.getRequest().getSession();
            List<ResultadosSubastaBean> listResultadoVersion= (List<ResultadosSubastaBean>)sesion.getAttribute("listaResultadosByVersion");
            if(!idResultado.equalsIgnoreCase("")){
                byte[] fileAnexo =null;
                for(ResultadosSubastaBean bean:listResultadoVersion){
                    if(bean.getId().equalsIgnoreCase(idResultado)){
                        fileAnexo = bean.getArchivo();
                        mimeType = bean.getExtenArchivo();
                        titulo = bean.getNomArchivo();
                        break;
                    }
                }
                if(fileAnexo != null){
                    inputStream = new ByteArrayInputStream(fileAnexo);
                    resultado = SUCCESS;
                }
            }
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
            resultado=ERROR;
        }
        return resultado;
    }

    public String downloadBasesAsignaSubasta(){
         String resultado ="";
        try{
            HttpSession sesion = ServletActionContext.getRequest().getSession();
            List<SubastaBean> listSubastaTemp = (List<SubastaBean>)sesion.getAttribute("listaAsignaSubastas");
            if(!idSubasta.equalsIgnoreCase("")){
                byte[] fileBases =null;
                for(SubastaBean bean:listSubastaTemp){
                    if(bean.getId().equalsIgnoreCase(idSubasta)){
                        fileBases = bean.getBases();
                        mimeType = bean.getContentTypeBases();
                        titulo = bean.getNombases();
                        break;
                    }
                }
                if(fileBases != null){
                    inputStream = new ByteArrayInputStream(fileBases);
                    resultado = SUCCESS;
                }
            }
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
            resultado=ERROR;
        }
        return resultado;
    }

    public String downloadBasesVersionSubasta(){
        String resultado="";
        try{
            HttpSession sesion= ServletActionContext.getRequest().getSession();
            List<SubastaBean> listSubastaTemp = (List<SubastaBean>)sesion.getAttribute("listaVersionesSubastas");
            if(!idVersionSubasta.equalsIgnoreCase("")){
                byte[] fileBases =null;
                for(SubastaBean bean:listSubastaTemp){
                    if(bean.getId().equalsIgnoreCase(idVersionSubasta)){
                        fileBases = bean.getBases();
                        mimeType = bean.getContentTypeBases();
                        titulo = bean.getNombases();
                        break;
                    }
                }
                if(fileBases != null){
                    inputStream = new ByteArrayInputStream(fileBases);
                    resultado = SUCCESS;
                }
            }
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
            resultado=ERROR;
        }
        return resultado;
    }

    public String downloadAnexoAsignaSubasta(){
         String resultado ="";
        try{
            HttpSession sesion = ServletActionContext.getRequest().getSession();
            List<SubastaBean> listSubastaTemp = (List<SubastaBean>)sesion.getAttribute("listaAsignaSubastas");
            if(!idSubasta.equalsIgnoreCase("")){
                byte[] fileAnexo =null;
                for(SubastaBean bean:listSubastaTemp){
                    if(bean.getId().equalsIgnoreCase(idSubasta)){
                        fileAnexo = bean.getAnexo();
                        mimeType = bean.getContentTypeAnexo();
                        titulo = bean.getNomAnexo();
                        break;
                    }
                }
                if(fileAnexo != null){
                    inputStream = new ByteArrayInputStream(fileAnexo);
                    resultado = SUCCESS;
                }
            }
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
            resultado=ERROR;
        }
        return resultado;
    }

    public void setRequest(Map<String, Object> request) {
        this.request = request;
    }

    //getters y setters
    public String getIdSubasta() {
        return idSubasta;
    }

    public void setIdSubasta(String idSubasta) {
        this.idSubasta = idSubasta;
    }

    public InputStream getInputStream() {
        return inputStream;
    }

    public void setInputStream(InputStream inputStream) {
        this.inputStream = inputStream;
    }

    public String getMimeType() {
        return mimeType;
    }

    public void setMimeType(String mimeType) {
        this.mimeType = mimeType;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public String getIdResultado() {
        return idResultado;
    }

    public void setIdResultado(String idResultado) {
        this.idResultado = idResultado;
    }

    public String getIdVersionSubasta() {
        return idVersionSubasta;
    }

    public void setIdVersionSubasta(String idVersionSubasta) {
        this.idVersionSubasta = idVersionSubasta;
    }
 }
